Реферат

УТВЕРЖДЕНО

Зав. каф. информатики
Ю.С. Кабальновым, 2004 г.

Методические указания

к выполнению курсовой работы

по дисциплине

информатика

(для всех факультетов и специальностей)

Задания выполняются на языке программирования Visual Basic 6.0
или с использованием приложений Microsoft Office 2000
в зависимости от варианта задания на курсовую работу

Составители: Кузьмина Е.А., Лебедев В.А., Тархов С.В., Уразбахтин Р.Н., Хамзина Е.А.


ЦЕЛЬ РАБОТЫ

Закрепление и углубление знаний по информатике, практических навыков работы на персональном компьютере и разработки пользовательских приложений с использованием языков программирования высокого уровня и современных компьютерных технологий обработки информации, а также навыков в составлении текстовой документации.


ПОРЯДОК ПОЛУЧЕНИЯ ЗАДАНИЯ, ВЫПОЛНЕНИЯ И СДАЧИ КУРСОВОЙ РАБОТЫ

Варианты заданий на курсовую работу выдаются преподавателем.

После получения варианта задания у преподавателя студент должен оформить задание на листе бумаги формата А4 (стандартный лист размером 210х297 мм) — см. пример оформления задания.

Выполнение курсовой работы является самостоятельной работой студента под руководством преподавателя, который проводит консультации в соответствии утвержденным расписанием.

За принятые в работе решения, правильность функционирования программы, качество выполнения текстовых документов, а также за своевременность выполнения работы в целом отвечает студент, который должен проявить максимум инициативы и самостоятельности в решении поставленных задач.

Защита курсовой работы проводится в установленные сроки после предоставления студентом перечисленных ниже материалов.

ВНИМАНИЕ. Задание считается выданным студенту с момента его подписи преподавателем-консультантом по курсовой работе. Посещение студентами консультаций и предъявление преподавателю промежуточных результатов работы обязательно.


СОДЕРЖАНИЕ И ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ КУРСОВОЙ РАБОТЫ.

Курсовая работа предусматривает, в зависимости от темы и варианта задания, разработку программного приложения средствами языка программирования Visual Basic или приложения, созданного с использованием программных средств интегрированного пакета MS Office. К курсовой работе составляется пояснительная записка, которая должна быть представлена на бумажном и электронном носителях (в виде документа MS Word).

Работа должна быть представлена:

· для вариантов заданий, выполняемых на Visual Basic — на электронном носителе в виде набора файлов, содержащих проект, необходимые файлы с данными и тестовыми примерами, исполняемый файл разработанного проекта;

· для вариантов заданий, выполняемых в MS Excel (MS Access 2000) – на электронном носителе в виде набора файлов, содержащих электронную книгу (базу данных) в зависимости от варианта задания;

· для всех вариантов заданий — на бумажном и электронном носителях представляется пояснительная записка (в виде документа MS Word), содержание которой описано ниже.


ОФОРМЛЕНИЕ И СОДЕРЖАНИЕ ПОЯСНИТЕЛЬНОЙ ЗАПИСКИ

Пояснительная записка оформляется на листах формата А4 (стандартный лист размером 210х297 мм). Объем пояснительной записки 12-15 стр. без учета приложения. Текст должен быть набран с учетом следующих параметров: поля документа сверху – 2,5 см, снизу – 2,5 см, слева – 3,0 см, справа – 1,0 см, шрифт Times New Roman, размер шрифта 12, межстрочный интервал 1, выравнивание – по ширине страницы, автоматическая нумерация страниц. Рисунки и таблицы должны иметь поясняющие надписи и быть пронумерованы.

Содержание пояснительной записки:

· титульный лист (см. образец),

· задание на курсовую работу (правила оформления см. выше),

· лист содержания (оглавление должно составляться с использованием средств автоматизации MS Word),

· основная часть, в которой подробно и последовательно излагается содержание выполненной работы, описываются все промежуточные и окончательные результаты, сопровождаемые необходимыми иллюстрациями,

· список литературы (перечень использованных при выполнении курсовой работы всех без исключения материалов, на которые должны быть ссылки в тексте);

· приложение (при необходимости).


Тема № 1

Тема № 1. «Решение задач средствами пакета MS Office»

Таблица вариантов курсовой работы

№
вар.

Наименование

Задание

1.

Велосипеды

Название: Расчет с клиентами в пункте проката.

Основные данные.
Данные о предметах проката: наименование вещи, количество, выдано, свободно, в ремонте, стоимость проката в зависимости от срока (не менее 5).

Данные о клиентах: фамилия, наименование вещи, даты выдачи и возврата, стоимость услуги.

Расчет итогов.

2.

3.

Видеокассеты

4.

5.

Автомобили

6.

7.

Спортинвентарь

8.

9.

Бытовая техника

10.

11.

Строительные инструменты

12.

13.

Музыкальные инструменты

14.

15.

Садовый инвентарь

16.

17.

Книги

18.

19.

Аренда жилья

20.

21.

Железнодорожный транспорт

Название: Продажа билетов.

Основные данные.
Данные о транспортном средстве: наименование категории билета, количество мест, продано, свободно, забронировано, стоимость проезда в зависимости от расстояния (не менее 5).

Данные о пассажирах: фамилия, категория билета, расстояние, льготы, дата продажи, возврат билета, стоимость.

Расчет итогов.

22.

23.

Автомобильный транспорт

24.

25.

Речной транспорт

26.

27.

Воздушный транспорт

28.

29.

Продукты питания

Название: Оптовый магазин.

Основные данные.
Данные о товаре: наименование товара, количество, продано, в наличии, зарезервировано, стоимость товара в зависимости от объема покупки (не менее 5).

Данные о покупателях: фамилия, наименование товара, объем покупки, льготы, дата продажи, стоимость.

Расчет итогов.

30.

31.

Одежда

32.

33.

Обувь

34.

35.

Бытовая техника

36.

37.

Канцелярские товары

38.

39.

Компьютеры

40.

41.

Книги

42.

43.

Инструмент

44.

45.

Мебель

46.

47.

Стройматериалы

Название: Оптовый магазин.

Основные данные.
Данные о товаре: наименование товара, количество, продано, в наличии, зарезервировано, стоимость товара в зависимости от объема покупки (не менее 5).

Данные о покупателях: фамилия, наименование товара, объем покупки, льготы, дата продажи, стоимость.

Расчет итогов.

48.

49.

Бытовая химия

50.

1. Задания с четными номерами вариантов выполняются в MS Access, с нечетными – в MS Excel.

2. В задании указаны обязательные поля данных, которые должны присутствовать в таблицах.

3. Обязательна графическая интерпретация итогов (количество и тип диаграмм (графиков) определяется преподавателем).

4. В бланке задания на курсовую работу разделе «Дополнительные условия выполнения задания» могут быть указаны по согласованию с преподавателем:

· количество и содержание дополнительных полей таблиц, а также количество взаимосвязанных таблиц;

· содержание расчета итогов (для MS Excel);

· содержание запросов и отчетов (для MS Access).

Примечание: Количество и содержание данных в таблицах должно позволять проверить и оценить работоспособность созданного приложения.


Тема № 2

Тема № 2. Исследование методов сортировки массивов

№п/п

№ вар.

1

Методы

2

3

4

5

Исследование и сохранение результатов

1

1,2

1

1

1

Представить на графике зависимость времени данных методов сортировки от количества элементов массива.

Результаты эксперимента сохранить в текстовом файле.

Исходные данные для исследования задаются с помощью генератора случайных чисел. Использовать массивы с количеством элементов от 500 до 5000 с шагом 50.

2

1,3

2

2

1

3

1,4

3

1

2

4

1,5

1

2

2

5

2,3

2

1

1

6

2,4

3

2

1

7

2,5

1

1

2

8

3,4

2

2

2

9

3,5

3

1

1

10

4,5

1

2

1

1

2

3

4

Методы сортировки

Исходные данные для визуализации

Признак

сортировки

Визуализация метода сортировки

1. метод пузырька

2. метод простых вставок

3. метод бинарных вставок

4. метод Шелла

5. метод бинарных деревьев

Количество элементов в массиве N=10.

Элементы массива задаются следующими способами:

1. из текстового файла

2. с клавиатуры

3. с помощью генератора случайных чисел

1 - по убыванию

2 – по возрастанию

1 – в виде гистограммы

2 – в виде таблицы

Для иллюстрации выберете любой из данных методов


Тема № 3

Тема № 3. Решение систем линейных уравнений

№п/п № вар. | 1 Методы | 2 | 3 | 4
 |  |  |  | Визуализация
1 | 1 | 1 | 1 | При N=2
2 | 2 | 1 | 1
3 | 3 | 1 | 1
4 | 1 | 2 | 2
5 | 2 | 2 | 2
6 | 3 | 2 | 2
7 | 1 | 2 | 3
8 | 2 | 1 | 3
9 | 3 | 2 | 3

1 | 2 | 3
Методы решения | Исходные данные | Вывод результатов
1. метод Гаусса 2. метод Халецкого 3. метод Крамера | Порядок системы N<=10. Коэффициенты задаются следующими способами: 1. из текстового файла 2. с клавиатуры Перед решением системы проверить исходные данные на корректность | 1 - FlexGrid 2 –PictureBox 3 - файл


Тема № 4

Тема № 4. Решение нелинейных уравнений

№п/п

№ вар.

1

Методы

2

3

4

Визуализация
метода

Исследование и сохранение
результатов

1

1

3sinÖx+0.35x-3.8=0, [2;3]

Иллюстрировать данный метод с последовательным уточнением корня.

Сравнить решения полученные данным методом и в математическом пакете. Результаты сохранить в текстовом файле.

2

2

0.25x3+x-1.2502=0, [0;2]

3

3

0.1x2-x ln x =0, [1;2]

4

4

cos(2/x)-2sin(1/x)+ 1/x=0, [1;2]

5

1

1-x+sin x - ln(1+x)=0, [0;1.5]

6

2

3x-4ln x -5 =0, [2;4]

7

3

ex-e-x-2=0, [0;1]

8

4

sin(ln x) - cos(ln x) +2 ln x = 0, [1;3]

9

1

x-2+sin(1/x)=0, [1.2;2]

10

2

ex+ ln x - 10x =0, [3;4]

11

3

3x-14+ex-e-x=0, [1;3]

12

4

x2-ln(1+x)-3=0, [2;3]

13

1

ln x - x + 1.8 =0, [2;3]

14

2

x tg x -1/3 =0, [0.2;1]

15

3

2x sin x - cos x = 0, [0.4;1]

16

4

tg(x/2)-ctg(x/2) +x =0, [1;2]

17

1

0.4+arctgÖx-x=0, [1;2]

18

2

2 ln2x+6 ln x -5=0, [1;3]

19

3

; [0.4;1]

20

4

0.6 3x-2.3x-3=0; [2;3]

1

2

Методы

Исходные данные

1. метод итераций

2. метод Ньютона (касательных)

3. метод секущих (хорд)

4. метод половинного деления

Уравнение выбирается с соответствии с номером варианта.

Интервал и точность задается с клавиатуры.


Тема № 5

Тема № 5. Исследование методов вычисления определенных интегралов

№п/п

№ вар.

1

Методы

2

3

4

Визуализация

метода

Исследование

1

1,2

1/x*ln2x; [1;4]

Для иллюстрации выберете любой из данных методов

Представить на графике зависимость погрешности данных методов от количества разбиений N (N изменяется на интервале [10,200] с шагом 10).

Точное решение находится по формуле Ньютона-Лейбница.

Результаты эксперимента сохранить в текстовом файле.

2

1,3

tg2x+ctg2x; [p/6;p/3]

3

2,3

1/(x ln(x)); [2;3]

4

1,2

x exsin x; [0;1]

5

1,3

(1/x2)*sin(1/x); [1;2.5]

6

2,3

xx(1+ln x); [1;3]

7

1,2

23x; [0;1]

8

1,3

(e3x+1)/(ex+1); [0;2]

9

2,3

sin2x; [0; p/2]

10

1,2

excos2x; [0; p]

11

1,3

(x ln x)2; [1;e]

12

2,3

sin x ln(tg x); [1;1.5]

13

1,2

x3/(3+x); [1;2]

14

1,3

x/(x4+3x2+2); [1;2]

15

2,3

(ln x/x)3

16

1,2

x arctg x; [0; [image] ]

17

1,3

; [0;1]

18

2,3

; [1;2]

1

2

Методы

Исходные данные

1. метод прямоугольников

2. метод трапеций

3. метод Симпсона (парабол)

Подынтегральная функция выбирается с соответствии с номером варианта.

Интервал и количество разбиений отрезка задается с клавиатуры.


Меню для курсового проекта

Меню для курсовой работы (проекта)

Меню представляет собой набор пунктов, например, таких как в окне Paint.Каждый пункт (Файл, Справка, Правка, Вид…) призваны выполнять определенную задачу или совокупность близких по характеру задач, к которым пользователю приходится обращаться достаточно часто. Для того, чтобы обратиться к тому или иному пункту меню пользователю достаточно щелкнуть мышью этот пункт на линейке меню или одновременно нажать две клавиши на клавиатуре: ALT+<Подчеркнутая буква>. Чаще всего пункт меню состоит из подпунктов – конкретных задач, которые также называются командами.

Меню команд формы создается в режиме проектирования с помощью редактора меню, который вызывается по команде Menu Editor из меню Tools системы программирования Visual Basic, при условии, что текущим объектом является форма. Элемент меню - это такой же объект, как и другие элементы управления.

Рис.1 Редактор меню

В окне редактора (Рис.1) вводятся свойства каждого элемента.

  1. Свойство Caption это текст команды или заголовка меню. Символ & в названии команды задает клавишу доступа. Например, &Файл откроет меню Файл комбинацией клавиш Alt+Ф.
  2. Свойство Name - это имя процедуры – отклика на выбор пункта меню. Его принято начинать с mnu и включать ссылку на элемент верхнего уровня. Например,

MnuFile

MnuFileNew

MnuFileOpen

MnuFileSave

Редактор сразу отображает введенные элементы в окне меню. Заголовки меню отображаются с начала строки. Команды меню должны быть сдвинуты на одну позицию вправо. Сдвиг обеспечивают кнопки со стрелками влево и вправо. Если пункт меню имеет подменю, то нужно сместить команды подменю еще на одну позицию вправо. Линия, разделяющая группу команд, определяется как черточка (-) в строке поля Caption.

После того, как определены свойства элемента меню, нужно нажать кнопку Next и перейти к определению следующего элемента. Кнопки со стрелками вверх/вниз дают возможность переместить элемент, кнопка Delete - удалить текущий элемент, кнопка Insert - вставить элемент перед текущим.

Событие Click - это единственное событие, поддерживаемое элементами меню. Чтобы меню работало, команды выполнялись, для каждого пункта меню нужно написать процедуру обработки события Click.

  3. Свойство Checked помещает или удаляет флажок рядом с командой (это необходимо для визуального подтверждения команды). Его значением является переменная логического типа. Используя это свойство, можно создавать команды-переключатели. Пусть в меню Вид есть команда Строка состояния (с именем элемента меню mnuStat), которая выводит или убирает с экрана элемент Label1. В начале работы программы команда отмечена флажком и элемент присутствует на экране. Если выбрать эту команду (Строка состояния), то флажок и строка состояния убираются с экрана. Следующая процедура выполняет эти действия:

Private Sub mnuStat_Click()

mnuStat.Checked = Not mnuStat.Checked

Label1. Visible = Not Label1.Visible

End Sub

  4. Если Свойство Enabled имеет значение False (флажок снят), то команда будет заблокирована (недоступная команда). Например, если в данный момент нельзя сохранить файл, то в коде программы устанавливаем mnuFileSave.Enabled=False. С этой целью можно использовать также свойство Visible. Если свойство Visible=False, то элемент становится невидимым.
  5. Свойство Shortcut определяет альтернативный вызов команды с клавиатуры. Здесь обычно используются клавиши Ctrl и Alt в сочетании с другими клавишами.

В Visual Basic существуют два основных стиля пользовательского интерфейса: интерфейс с одним документом (single-document interface, SDI) и интерфейс со многими документами (multiple-document interface, MDI). Текстовый редактор с интерфейсом SDI позволяет открыть только один документ - чтобы открыть другой, следует закрыть предыдущий. В приложении MDI вы можете открыть сразу несколько документов

С помощью Меню и Стандартных диалоговых окон (InputBox, MsgBox), методов ShowColor, ShowFont, ShowOpen, ShowSave элемента CommonDialog, а также элемента Rich TextBox (усовершенствованное текстовое поле) и инструментальной панели ToolBar можно создать однооконный интерфейс, аналогичный текстовому редактору WordPad. Элемент Rich TextBox дает возможность редактировать не только весь находящийся в нем текст, но и отдельные фрагменты этого текста.

Напомним, что CommonDialog добавляется к проекту через компонент MS Common Dialog Control 6.0. Усовершенствованное текстовое поле Rich Text Box добавляется к проекту через компонент MS Rich TextBox Control 6.0. Через компонент MS Windows Common Controls 6.0 добавляются к проекту: ToolBar – панель инструментов, StatusBar – строка состояния, ImageList – список изображений и другие элементы.

С помощью элемента Rich TextBox можно форматировать текст, вставлять объекты, редактировать его способом Drag & Drop и сохранять в специальном формате *.rtf.

Объем текста в Rich TextBox в отличие от TextBox не ограничен пределом в 64К и позволяет читать большие текстовые файлы. Свойство DataSource объекта Rich TextBox позволяет использовать элемент при работе с базами данных, в частности для полей MEMO.

Открыть и сохранить в файл можно как в .rtf формате, так и в обычном текстовом. В последнем случае информация о форматировании теряется. Для чтения/записи тектсовых файлов следует указывать свойства TextRTF или SelRTF. Например, чтобы прочитать содержимое только текстового файла достаточно записать:

RichTextBox1.TextRTF = Input(LOF(fn), fn) ‘но не RTF-файлов

‘а чтобы записать в текстовый файл содержимое поля RichTextBox1 -

Print #fn, RichTextBox1.TextRTF

В поле Rich TextBox можно загрузить файл с расширением .rtf путем перетаскивания выделенного текста мышью из другого приложения, или перетаскивания файла из папки, либо загрузить его методом LoadFile. Чтобы сохранить на диске необходимо воспользоваться методом SaveFile. Синтаксис методов:

ИмяОбъекта.LoadFile Файл[,Тип файла]

ИмяОбъекта.SaveFile Файл[,Тип файла]

ИмяОбъекта - это имя текстового поля, куда загружается .rtf файл. Файл – путь к файлу. Тип файла – это одно из двух значений: rtfText или rtfRTF.

Некоторые свойства объекта Rich TextBox начинаются с приставки Sel (от слова Select) Все они относятся к выделенной части текста в данном объекте.

Будущие кнопки создаются в режиме проектирования, работая с объектом ImageList1.

Загрузив пиктограммы в ImageList1, вы получаете набор картинок, каждая из которых имеет свой номер, задаваемый свойством Index. Нумерация начинается с единицы.

Доступ к свойствам объектов ToolBar1 и ImageList1 осуществляется через свойство Custom или через команду Properties контекстного меню.

Объект ToolBar1 связывается на закладке General через свое свойство ImageList со списком изображений объекта ImageList1. Объект ToolBar имеет закладку Buttons, на которой посредством кнопки InsertButton последовательно загружаются кнопки из объекта ImageList1, при этом свойство Index получает очередной номер. Каждому номеру свойства Index должен соответствовать номер картинки (свойство Image) на панели инструментов.

Свойство ToolTipText задает всплывающую подсказку по кнопкой на панеле инструментов. Свойство Style по умолчанию имеет номер 0 (обычная кнопка). Другие значения номеров свойства Style используются для кнопок переключателей, кнопочных меню.

Событие Button_Click генерируется элементом ToolBar.

Элемент StatusBar может иметь либо стиль sbrNormal, либо sbrSimple (свойство Style). Во втором случае в строке можно выдавать сообщения во время работы приложения. Например, пояснять действие кнопки, над которой находится указатель мыши.

Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim n As Single

'Знак \ означает целочисленное деление

n = X \ toolbar1.ButtonWidth

'Массив ms содержит строки сообщения

If n< Toolbar1.Buttons.Count Then StatusBar1.SimpleText= ms(n)

В случае sbrNormal можно разделить строку состояния на ряд панелей. Тогда, кроме сообщений, можно выводить дату, время, различные индикаторы.

Поясним, как можно организовать работу с Буфером обмена (Clipboard) — а именно, Копировать, Вырезать и Вставлять выделенные фрагменты текста.

Буфер обмена (Clipboard) — это тоже объект Visual Basic, но его Вы не найдёте в арсенале панели компонент ToolBox, так как это объект Windows. Но к этому объекту можно применять некоторые методы Visual Basic. Мы используем только два основных метода: SetText и GetText. Сами названия методов говорят за себя — это помещение текста в «карман» (Set) и извлечение текста из «кармана» (Get).


Диалоги

В Windows выбор параметров выполняется в окнах диалога. Для добавления стандартного диалога в проект используется команда Project\Add Form\Dialog. При этом стандартные диалоги не могут иметь строк меню, а предназначены для отображения текстовой и графической информации. Для добавления в проект нестандартного диалога (форма-диалог) используется команда Project\Add Form\Form.

При вызове программы на выполнение в оперативную память считывается ее стартовый объект, тот, который указан в свойствах проекта (Project\Project Properties). По умолчанию это форма Form1. В проекте могут присутствовать много форм. Между формами необходимо определить отношения. Какая из них вызывающая, а какая вызываемая. Вызывающая форма должна содержать средства для вызова формы-диалога, а вызываемая - средства возврата.

При загрузке любой формы генерируется событие Load. В процедуре обработки этого события можно сделать установки параметров, заполнить списки, побеседовать с пользователем, а также загрузить в случае необходимости другие формы, в том числе и окно диалога. Загрузка форм выполняется оператором Load.

Например, в процедуре загрузки вызывающей формы пишется команда:

Load Form2 'Загрузить форму 2

Метод Show вызывает появление формы на экране. При этом, если форма не была загружена ранее, она загружается. Полный синтаксис метода:

<Объект>.Show [<Стиль >, <Связь >]

Параметр стиль принимает значение 0 или 1 и обозначает модальность. Если окно открывается как модальное, то, не закрыв его, нельзя перейти к другому окну. По умолчанию 0, - немодальное. В качестве второго параметра может быть указана вызывающая форма. В этом случае открываемая форма считается подчиненной и выгружается из памяти, если закрывается главная форма. Например, вывести на экран форму Form2 как модальное окно, подчиненное Form1:

Form2.Show 1, Form1

Или вывести на экран диалог Dialog как немодальное окно, подчиненное Form1:

Dialog.Show 0, Form1

На форму-диалог нужно поместить одну или две командные кнопки: ОК и Отмена (В диалогах они появляются автоматически). В процедуре для ОК Вам необходимо передать параметры и убрать форму-диалог (или диалог) с экрана.

Для передачи параметров из вызываемой формы в вызывающую, следует к объектам и переменным добавлять имя формы, поскольку она не является в текущий момент активной.

Form1.Text1.FontName = Label1.FontName

Если используются переменные объявленные в другом модуле, то они должны быть глобальными, т.е. объявлены с ключевым словом Public. Например, переменная Size объявляется в модуле вызывающей формы:

Public Size As Integer

В модуле формы-диалога можно присвоить значение этой переменной:

Form1.Size = Label1.FontSize

После того, как параметры переданы, нужно убрать с экрана окно диалога, то есть сделать его невидимым методом Hide. Этот метод убирает форму с экрана, но не выгружает ее из памяти, позволяя не тратить время на загрузку при последующих вызовах.

Form2.Hide ‘Убрать форму

Dialog.Hide ‘Убрать диалог

Эта же команда должна быть и в процедуре для кнопки Отмена, если эта кнопка присутствует на диалоге. По окончании работы программы все формы и диалоги должны быть выгружены из памяти. Оператор End выполняет все необходимые действия для завершения работы программы. Обычно в приложениях Windows выход выполняется при выборе команды Выход из меню Файл или при закрытии главного окна программы (событие UnLoad). Если в вашей программе имеются не подчиненные формы, то нужно создать процедуру обработки события UnLoad для главной формы и ввести туда оператор End.

Каждая загруженная форма поглощает часть системных ресурсов, поэтому рекомендуется выгружать уже использованные формы по ходу программы. Это делается с помощью оператора UnLoad.

UnLoad Form2 'Выгрузить форму 2

В одном проекте не может быть двух форм с одинаковыми именами. Это может произойти, если Вы вставляете форму из какого-либо проекта, а у нее то же имя (свойства Name) равно Form1, что и в главной форме.


Программа-шаблон SDI-приложения

Представленная ниже программа позволяет создавать, просматривать и редактирует текстовые файлы формата RTF, имеет интерфейс в стиле Windows. В программный интерфейс входит строка меню, панель инструментов ToolBar1, текстовое поле RichTextBox1, строка состояния StatusBar1, CommonDialog1, список изображений ImageList1.

Для объекта ImageList1 с помощью свойства Custom через закладку Images загружаются картинки по маршруту C:\Install\Visual Basic 6.0\COMMON\GRAPHICS\BITMAPS\TLBR_W95, в том порядке, как они будут расположены на панели инструментов.

Для объекта ToolBar1 (панель инструментов) также открываем диалог Custom. На вкладке General устанавливаем связь свойства ImageList с объектом ImageList1, который содержит картинки для кнопок. На вкладке Buttons вставляем кнопки и задаем их свойства. Для этого:

· нажимаем Insert Button (вставить кнопку), при этом автоматически определяется свойство Index (номер кнопки);

· вводим порядковый номер в свойство Image, равное свойству Index.

Кнопки панелей инструментов будут дублировать команды меню. Поэтому, чтобы не повторять код в процедурах обработки, нужно создать общие процедуры, например, mnuFileOpen и mnuFileSave.

На панели инструментов кнопки Вырезать и Копировать доступны, только если имеется выделенный текст. Поэтому в режиме проектирования (на вкладке Buttons окна Property Pages) для них снимается флажок Enabled, а в процедуре RichTextBox1_SelChange() устанавливается.

Меню имеет следующий вид (в скобках указаны процедуры обработки событий).

Файл (mnuFile)

Создать (mnuFileNew)

Открыть (mnuFileOpen)

Сохранить (mnuFileSave)

Закрыть (mnuFileClose)

------------- (любая последовательность символов)

Выход (mnuExit)

Правка (mnuEdit)

Вырезать (mnuCut)

Копировать (mnuCopy)

Вставить (mnuPaste)

------------ (любая последовательность символов)

Выделить все (mnuSelAll)

Вид (mnuView)

▼Панель инструментов (mnuViewTb)

▼Строка состояния (mnuViewTb)

Формат (mnuFormat)

Шрифт (mnuFont)

Цвет (mnuColor)

Символов (mnuColorChar)

Фона (mnuColorFon)

Дифф. уравнение (mnuDiff)

Численное решение (mnuDiff_c)

График (mnuDiff_g)

Блок-схема (mnuDiff_b)

Выч. интеграла (mnuInt)

Численное решение (mnuInt_c)

График (mnuInt_g)

Блок-схема (mnuInt_b)

Код программы:

Private Sub Form_Load()

Toolbar1.DragMode = 0

' Чтобы можно использовать технологию Drag&drop

RichTextBox1.OLEDragMode = rtfOLEDragAutomatic

RichTextBox1.OLEDropMode = rtfOLEDropAutomatic

With CommonDialog1

.CancelError = True

.FontName = "Times New Roman"

.FontSize = 12

.FontBold = True

.FontItalic = True

End With

Form1.Hide

Dialog.Show 1, Form1

End Sub

Private Sub Form_Resize()

'Автоматическое изменение размеров формы и текстового поля

RichTextBox1.Height = Form1.Height - StatusBar1.Height - 1200

RichTextBox1.Width = Form1.Width - 100

End Sub

Private Sub mnuDiff_c_Click()

Load Form2

Form2.Show 1, Form1

End Sub

Private Sub mnuFileNew_Click()

RichTextBox1.Visible = True

RichTextBox1.TextRTF = ""

End Sub

Private Sub mnuFileOpen_Click()

On Error GoTo 100

With CommonDialog1

.Filter = "RTF-файлы (*.rtf)|*.rtf|Текстовые файлы (*.txt)|*.txt|Все файла (*.*)|*.*|"

.FileName = "*.rtf"

.Flags = cdlOFNHideReadOnly 'Or cdlOFNAllowMultiselect

.ShowOpen 'Открыть диалог Open и ввести имя файла

End With

RichTextBox1.Visible = True

RichTextBox1.LoadFile CommonDialog1.FileName, rtfRTF

mnuEdit = True

mnuView = True

mnuFormat = True

Exit Sub

100:

MsgBox "Ошибка" & Str$(Err.Number) & " при чтении." & _

vbCrLf & Err.Description

End Sub

Private Sub mnuFileClose_Click()

RichTextBox1.Visible = False

mnuEdit = False

mnuView = False

mnuFormat = False

End Sub

Private Sub mnuExit_Click()

End

End Sub

Private Sub mnuFileSave_Click()

fn = FreeFile

On Error GoTo 100

CommonDialog1.ShowSave 'Открыть диалог Save и ввести имя файла

RichTextBox1.SaveFile CommonDialog1.FileName, rtfRTF

Exit Sub

100:

MsgBox "Ошибка" & Str$(Err.Number) & " при записи." & _

vbCrLf & Err.Description

End Sub

Private Sub mnuCopy_Click()

Clipboard.SetText RichTextBox1.SelText

End Sub

Private Sub mnuCut_Click()

Clipboard.SetText RichTextBox1.SelText

RichTextBox1.SelText = ""

End Sub

Private Sub mnuPaste_Click()

RichTextBox1.SelText = Clipboard.GetText

End Sub

Private Sub mnuSelAll_Click()

RichTextBox1.SelStart = 0

RichTextBox1.SelLength = Len(RichTextBox1.TextRTF)

End Sub

Private Sub mnuFont_Click()

On Error GoTo 100

With CommonDialog1

.Flags = cdlCFScreenFonts Or cdlCFEffects 'Or cdlCFNoStyleSel

.ShowFont

End With

With RichTextBox1

.SelFontName = CommonDialog1.FontName

.SelBold = CommonDialog1.FontBold

.SelItalic = CommonDialog1.FontItalic

.SelFontSize = CommonDialog1.FontSize

.SelStrikeThru = CommonDialog1.FontStrikethru

.SelUnderline = CommonDialog1.FontUnderline

.SelColor = CommonDialog1.Color

End With

Exit Sub

100:

MsgBox "Ошибка" & Str$(Err.Number) & " при выборе шрифта." & _

vbCrLf & Err.Description

End Sub

Private Sub mnuColorFon_Click()

CommonDialog1.ShowColor

RichTextBox1.BackColor = CommonDialog1.Color

End Sub

Private Sub mnuColorChar_Click()

CommonDialog1.Flags = cdlCCPreventFullOpen

CommonDialog1.ShowColor

RichTextBox1.SelColor = CommonDialog1.Color

End Sub

Private Sub mnuTitul_Click()

Dialog.Show 1, Form1

End Sub

Private Sub mnuViewStat_Click()

StatusBar1.Visible = Not StatusBar1.Visible

mnuViewStat.Checked = Not mnuViewStat.Checked

End Sub

Private Sub mnuViewTb_Click()

Toolbar1.Visible = Not Toolbar1.Visible

mnuViewTb.Checked = Not mnuViewTb.Checked

End Sub

Private Sub RichTextBox1_SelChange()

If RichTextBox1.SelLength > 1 Then

Toolbar1.Buttons(4).Enabled = True

Toolbar1.Buttons(5).Enabled = True

Else

Toolbar1.Buttons(4).Enabled = False

Toolbar1.Buttons(5).Enabled = False

End If

End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

Select Case Button.Index

Case 1

mnuFileNew_Click

Case 2

mnuFileOpen_Click

Case 3

mnuFileSave_Click

Case 4

mnuCut_Click

Case 5

mnuCopy_Click

Case 6

mnuPaste_Click

End Select

End Sub

Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)

Dim ms(5) As String, n As Single

ms(0) = "Создать новый файл"

ms(1) = "Открыть существующий файл"

ms(2) = "Сохранить файл в окне"

ms(3) = "Вырезать в БО выделенный фрагмент"

ms(4) = "Копировать в БО выделенный фрагмент"

ms(5) = "Вставить из БО выделенный фрагмент"

n = x \ Toolbar1.ButtonWidth

If n < Toolbar1.Buttons.Count Then

StatusBar1.ToolTipText = ms(n)

StatusBar1.SimpleText = ms(n)

End If

End Sub

‘___________________ Программный код Form2__________________________

Dim x As Double, y As Double, z As Double, x0 As Double, y0 As Double, z0 As Double

Dim a As Double, b As Double, n As Double, h As Double, k1 As Double, k2 As Double

Dim i1 As Double, i2 As Double, i3 As Double, i4 As Double, k4 As Double, k3 As Double

Private Function f(x As Double, y As Double, z As Double) As Double

f = z

End Function

Private Function g(x As Double, y As Double, z As Double) As Double

g = -z / x

End Function

Private Sub Form_Load()

<Здесь должно следовать решение дифференциального уравнения методом Рунге-Кутта>

End Sub

Private Sub Form_Unload(Cancel As Integer)

Unload Form2

End Sub

‘__________________ Программный код Dialog_______________

Private Sub OKButton_Click()

Me.Hide

Form1.Show

Form1.Caption = Label5.Caption

End Sub

Рис.2 Титульный лист


Многодокументный интерфейс

Откройте Visual Basic как обычно, используя шаблон Standart EXE для создания SDI-форм. Чтобы создать шаблон MDI–формы, которая будет являться контейнером для подчиненных форм необходимо воспользоваться командой Project\Add MDI Form. Подчиненной считается SDI-форма, у которой значение свойства MDIChild равно True Помните об этом!

В режиме выполнения подчиненные окна помещаются внутри родительского окна MDI формы, а не отображаются отдельным диалогом. Меню команд MDI формы может быть общим для всех подчиненных окон. Если же подчиненная форма имеет собственное меню команд, то оно замещает меню формы контейнера при активизации. При закрытии формы-контейнера закрываются все подчиненные формы. Панель инструментов располагается всегда в MDI форме.

В приложении MDI можно открыть много окон построенных по одному образцу. При этом в режиме проектирования создается один экземпляр формы. Для того чтобы в режиме выполнения открыть много окон в коде программы создаются новые экземпляры подчиненной формы, используя следующее описание:

Dim NewDoc As New Form1 'Создать новый экземпляр формы

NewDoc.Show 'Показать на экране

Поскольку много подчиненных форм имеют одинаковое имя и одинаковый код, то не следует в коде программы (если код используется несколькими экземплярами формы) использовать имя формы, а для ссылок на текущую форму используют ключевое слово Me. При этом MDI- форма имеет свойство ActiveForm, которое обозначает активную в данный момент SDI-форму (эта форма должна быть предварительно создана с помощью команды Project\Add Form и заполнена необходимой информацией). Например,

MDIForm1.ActiveForm.Caption=”MDI-application” ‘Обращение к свойству активной SDI-формы

MDIForm1.ActiveForm.Hide ‘Спрятать (закрыть) текущую SDI-форму

Unload Me 'Выгрузить текущую SDI-форму.

На форму MDI можно поместить управляющий элемент, если он имеет свойство Align (Выравнивания) или является невидимым в режиме выполнения. Например, среди отображаемых элементов на панели ToolBox можно добавить Date, Timer, PictureBox.

При загрузке подчиненной формы автоматически загружается и форма MDI, поскольку она является главной, стартовой. На это должно указывать значение поля StartUp Object на закладке General диалога меню Project\Project Properties. Однако при загрузке формы MDI, подчиненные формы автоматически не загружаются.

Выгрузка формы выполняется по команде UnLoad в коде программы или при закрытии окна при выполнении процедур обработки событий QueryUnLoad и UnLoad для формы. При выгрузке MDI-формы выгружаются и все подчиненные формы. Команда End вызывает немедленное завершение программы.

Ваше приложение может вызывать другое приложение (*.exe-файл). Для этого существует специальная функция Shell - монитор запущенных программ. Ее синтаксис:

Shell (pathname [, windowstyle])

где: pathname — имя исполняемого файла с возможным указанием диска и пути. Если расширение файла не указано, добавляется расширение .ехе;

windowstyle — указывает на состояние окна, в котором запускается программа. Если этот аргумент не указан, то по умолчанию он принимается равным двум. Некоторые значения аргумента windowstyle приведены в таблице 1.

Таблица 1

Константа | Значение | Описание
vbMaximizedFocus | 3 | Развернутое активное окно
vbNormalFocus | 1 | Активное окно обычного размера
vbNormalNoFocus | 4 | Неактивное окно обычного размера
vbMinimizedFocus | 2 | Активное окно, свернутое в значок
vbMinimizedNoFocus | 6 | Неактивное окно, свернутое в значок
VbHide | 0 | Скрытое активное окно

Функция Shell не может открывать документы без вызова соответствующего приложения.


Пример создание MDI-приложения

Создадим простой текстовый редактор, имеющий MDI-интерфейс. Откройте форму-контейнер командой Project\Add MDI Form и определите у него свойство WindowState, равное 2. На форме Form1 (подчиненной формы) создайте текстовое поле Rich TextBox1 и установите для него следующие свойства: Top = 0 и Left = 0.

Создайте процедуру Form_Resize, чтобы размеры текстового окна изменялись при изменении размеров подчиненной формы.

Для MDI - формы создайте следующее меню.

File (mnuFile)

New (mnuFileNew)

Open (mnuFileOpen)

Close (mnuFileClose)

Save (mnuFileSave)

Exit (mnuExit)

Edit

Copy (mnuCopy)

Paste (mnuPaste)

Paint (mnuPaint)

Windows (mnuWin)

Меню Windows будет отображать список открытых окон и автоматически управлять списком названий в подчиненных окнах и обеспечивать переход при выборе нужного окна. Для этого в редакторе меню лишь необходимо установите флажок WindowList для элемента Windows. Свойство WindowList применяется только к формам MDI и подчиненным формам.

В приложении MDI будем отслеживать сохранение данных, для этого введем логическую переменную:

Public fs As Boolean

Переменная fs получает значение True при любых изменениях в поле ввода (код подчиненной формы).

Код подчиненной формы:

Private Sub Form_Load()

RichTextBox1.TextRTF = ""

Me.Caption = "Document №"

End Sub

Private Sub Form_Resize()

RichTextBox1.Height = Me.Height - 100

RichTextBox1.Width = Me.Width - 100

End Sub

Private Sub RichTextBox1_Change()

If RichTextBox1.TextRTF <> "" Then MDIForm1.fs = True

End Sub

Код MDI-формы:

Public fs As Boolean

Dim Fname As String

Private Sub mnuExit_Click()

Unload Me ' или просто End

End Sub

Private Sub mnuFileClose_Click()

MDIForm1.ActiveForm.Hide

End Sub

Private Sub mnuFileNew_Click()

Dim NewDoc As New Form1

Static n As Integer

NewDoc.Show

n = n + 1

'Заголовок окон можно изменить здесь или при загрузке подчиненной формы

'MDIForm1.ActiveForm.Caption = "Документ"

MDIForm1.ActiveForm.Caption = MDIForm1.ActiveForm.Caption & CStr(n)

End Sub

Private Sub mnuFileOpen_Click()

Dim fn As Integer

fn = FreeFile

On Error GoTo 100

With CommonDialog1

.Filter = "Все файлы(*.*)|*.*|Текстовые файлы (*.txt)|*.txt"

.FileName = "*.txt"

.Flags = cdlOFNHideReadOnly

.ShowOpen

End With

Fname = CommonDialog1.FileName

Open Fname For Input As fn

MDIForm1.ActiveForm.RichTextBox1 = Input(LOF(fn), fn)

Close

Exit Sub

100:

MsgBox "Ошибка" & Str$(Err.Number) & "при чтении." & vbCrLf & Err.Description

End Sub

Private Sub mnuFileSave_Click()

Dim fn As Integer

fn = FreeFile

On Error GoTo 100

CommonDialog1.ShowSave

Fname = CommonDialog1.FileName

Open Fname For Output As fn

Print #fn, MDIForm1.ActiveForm.RichTextBox1

Close

Exit Sub

100:

MsgBox "Ошибка" & Str$(Err.Number) & "при записи." & vbCrLf & Err.Description

End Sub

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)

IF fs Then

IF MsgBox("Сохранить?", vbYesNo) = vbYes Then mnuFileSave_Click

End If

End Sub

Private Sub mnuPaint_Click()

Pathof = "C:\Program Files\Accessories\MSPaint.exe"

D = Shell(Pathof, 1)

End Sub

Private Sub mnuCopy_Click()

Clipboard.SetText MDIForm1.ActiveForm.RichTextBox1.SelText

End Sub

Private Sub mnuPaste_Click()

'Чтобы вставить рисунок из Paint надо нажать Shift+Ins

MDIForm1.ActiveForm.RichTextBox1.SelText = Clipboard.GetText

End Sub